package ods_config

import (
	"fmt"
	"go.uber.org/zap"
	"server/global"
)

func StartTmJob(jobId uint) (err error) {
	println("开始定时任务", jobId)
	var odsConfig OdsDbConfig
	m, err := odsConfig.GetJob(jobId)
	if err != nil {
		return err
	}

	_, ok := global.XidwTimer.FindCron(m.OdsTbName)
	if ok {
		err := global.XidwTimer.StartTask(m.OdsTbName)
		if err != nil {
			return err
		}
		return nil
	}
	_, err = global.XidwTimer.AddTaskByJob(m.OdsTbName, m.CronExpression, TmTask{OdsTbId: m.OdsTbId})
	if err != nil {
		return err
	}

	global.JobRunning[m.OdsTbName] = 1

	return nil
}

func StopTmJob(jobId uint) (err error) {
	var odsConfig OdsDbConfig
	m, err := odsConfig.GetJob(jobId)
	if err != nil {
		return err
	}

	global.XidwTimer.Clear(m.OdsTbName)

	delete(global.JobRunning, m.OdsTbName)
	return nil
}

func TmTaskHandler(tbId uint) (err error) {
	odsDbConfig, err := InitOdsDbConfig(tbId)
	if err != nil {
		global.Logger.Error(" 初始化同步配置失败:", zap.Error(err))
		return fmt.Errorf(" 初始化同步配置失败:%s", err)
	}
	err = odsDbConfig.DoSync()
	if err != nil {
		global.Logger.Error(fmt.Sprintf("同步失败:%s", err))
		return err
	}

	return nil
}

type TmTask struct {
	OdsTbId uint
}

func (t TmTask) Run() {
	err := TmTaskHandler(t.OdsTbId)
	if err != nil {
		return
	}
}
